//
//  CZEmoticonManager.swift
//  git
//
//  Created by 徐 鹏超 on 16/4/15.
//  Copyright © 2016年 徐 鹏飞. All rights reserved.
//

import UIKit

class CZEmoticonManager: NSObject {

    var test:[CZEmoticon] = [CZEmoticon]()
    
    ///最近表情包 -- 为什么用 static? 经常用,不经常变
    static var recentEmoticon: [CZEmoticon] = [CZEmoticon]()
    ///默认表情包
    static var defaultEmoticon: [CZEmoticon] = CZEmoticonManager.emoticons("com.sina.default")
    
    ///emoji
    static var emojiEmoticon: [CZEmoticon] = CZEmoticonManager.emoticons("com.apple.emoji")
    ///浪小花表情包 -- class 类方法,不需要创建一个实例,直接写类名.类方法
    static var lxhEmoticon: [CZEmoticon] = CZEmoticonManager.emoticons("com.sina.lxh")
    
    // 类定义读取数据表情的方法
    class func emoticons(package: String) ->[CZEmoticon]{
        
        // 1. 先需要知道bundle的路径 /Users/apple/Library/Developer/CoreSimulator/Devices/60077E52-CB9F-4BE2-9D9A-F1626758E089/data/Containers/Bundle/Application/73CD2323-CCC8-4672-A841-B2A8947D1981/表情包.app/Emoticons.bundle
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        //2.添加表情包的路径 /Users/apple/Library/Developer/CoreSimulator/Devices/60077E52-CB9F-4BE2-9D9A-F1626758E089/data/Containers/Bundle/Application/73CD2323-CCC8-4672-A841-B2A8947D1981/表情包.app/Emoticons.bundle/com.sina.lxh
        let packPath = (path as NSString).stringByAppendingPathComponent(package)
        // 3.拼接图片的名字.图片的名字在 info.plist里,我们需要先读取出来
        let infoPath = (packPath as NSString).stringByAppendingPathComponent("info.plist")
        // 4. 获取字典
        let dic = NSDictionary(contentsOfFile: infoPath)
        // 5. 获取表情数组 ->  AnyObject?
        let emoticons = dic!["emoticons"] as!  [[String: NSObject]]
        // 6. 进行遍历
        var result = [CZEmoticon]()
        
        for emoticon in emoticons{
            
            let e = CZEmoticon(dic: emoticon)
            
            e.path = packPath
            
            result.append(e)
            
        }
        
        return result
    }

    class func getAllEmoticon() -> [[[CZEmoticon]]]{
        
        //数组[ 数组[   数组 [  ]]    ]
        return [pageEmoction(recentEmoticon),pageEmoction(defaultEmoticon),pageEmoction(emojiEmoticon),pageEmoction(lxhEmoticon)]
        
    }
    
    
    // 每页表情有20个,需要对原有的一维数组进行分割,变成一个二维数组
    class func pageEmoction(emoticons: [CZEmoticon]) -> [[CZEmoticon]]{
        
        // 1. 先要确定有多少页
        // 18 1页
        // 20 1页
        // 21 2页
        let page = (emoticons.count - 1)/20 + 1
        
        // 2. 初始化一个数组,
        var result = [[CZEmoticon]]()
        // 3. 分割数组,有多少页,分割多少次
        //        for i in 0...10{
        //
        //        }
        
        for i in 0..<page{
            // 43
            // 当 i = 2
            // loc = 40
            // len = 20
            // 切割的开始位置
            let loc = i * 20
            // 切割的长度
            var len = 20
            
            if loc + len > emoticons.count {
                
                len = emoticons.count - loc
                
            }
            // 分割方法是OC的,我们需要把Swift中的数组转换成OC的
            let sub = (emoticons as NSArray).subarrayWithRange(NSMakeRange(loc, len)) as! [CZEmoticon]
            
            result.append(sub)
            
        }
        
        return result
    }

    // 添加最近表情的方法
    // 不能重, 最多20个,最新点击的 在开始
    class func addRecentEmoticon(emoticon: CZEmoticon) {
        
        // 不能重: 1 遍历 2. 数组有一个方法20按钮表情的数据传递
        if !recentEmoticon.contains(emoticon){
            //            recentEmoticon.append(emoticon)
            
            recentEmoticon.insert(emoticon, atIndex: 0)
            
            if recentEmoticon.count > 20 {
                recentEmoticon.removeLast()
            }
        }
        
        
        
    }
    
    
}
